import {reqDetailList,reqAddOrUpdateShopCar} from '@/api'
const actions = {
    async getDetailList({commit},id){
        let result = await reqDetailList(id)
        if(result.code === 200){
            commit('GETDETAILLIST',result.data)
        }
    },
    // 此步骤并不会返回数据,但是需要告诉组件是否添加成功
    //函数前加async会使此函数返回一个Promise对象,所以它应该有三种状态,若无返回值,其状态永远都是成功
    //所以需要在这里返回成功/失败的状态,依次在组件中区别是否添加购物车成功
    async postShopCar(miniStore,{skuId,skuNum}){
        //result 是一个promise对象,状态为成功
        let result = await reqAddOrUpdateShopCar(skuId,skuNum)
        if(result.code == 200){
            //进入此判断说明添加购物车成功,此时postShopCar应返回成功的promise
            return '成功'
        }else{
            //进入此判断,说明添加购物车失败,应返回失败的promise
            return Promise.reject(new Error('添加购物车失败'))
        }
    }
}

const mutations = {
    GETDETAILLIST(state,detailData){
        state.detailData = detailData
    }
}

const state = {
    detailData:{}
}

const getters = {
    categoryView(state){
        // 此处避免项目中使用时数据未获取到,而结构却已经使用时抛出错误
        return state.detailData.categoryView || {}
    },
    skuInfo(state){
        return state.detailData.skuInfo || {}
    },
    spuSaleAttrList(state){
        return state.detailData.spuSaleAttrList || {}
    }
}

export default{
    actions,
    mutations,
    state,
    getters
}